/*
ont-space - The ontology-based resource metadata repository
Copyright (c) 2006-2008, Information Eng. Research Unit - Univ. of Alcalá
http://www.cc.uah.es/ie
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option)
any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package org.ontspace.sld.examples;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.ontspace.MetadataRepository;
import org.ontspace.owl.util.MetadataRepositoryConfigException;
import org.ontspace.Session;

import org.ontspace.owl.MetadataRepositoryFactory;
import org.ontspace.owl.MetadataRepositoryImpl;
import org.ontspace.owl.util.OntologyNotInRepositoryException;
import org.ontspace.sld.SLDQueryManager;
import org.ontspace.sld.owl.SLDQueryResultImpl;

/**
 * Example for a Learning design Query
 */
public class ExampleSLDQuerying {

    public static void main(String args[]) throws
            MetadataRepositoryConfigException, OntologyNotInRepositoryException {


        HashMap params =
                new HashMap();
        params.put(MetadataRepository.STORAGE_URI_PARAM,
                "jdbc:mysql://localhost/sld-ospace");
        params.put(MetadataRepository.USER_NAME_PARAM, "root");
        params.put(MetadataRepository.PWD_PARAM, "password");
        params.put(MetadataRepositoryImpl.DB_DRIVER_PARAM,
                "com.mysql.jdbc.Driver");
        params.put(MetadataRepositoryImpl.DB_TYPE_PARAM, "MySQL");
        params.put(MetadataRepositoryImpl.DC_SCHEMA_PATH_PARAM,
                "C:/mydirectory/cvs/ont-space/etc/sld-ont-space.owl");
        try {

            params.put(MetadataRepository.PUBLIC_REP_URI_PARAM,
                    new URI("http://o-space.org/rep"));
        } catch (URISyntaxException ex) {
            Logger.getLogger(ExampleSLDQuerying.class.getName()).log(Level.SEVERE,
                    null, ex);
        }



        MetadataRepository rep =
                MetadataRepositoryFactory.openMetadataRepository(params);

        // Get session
        Session sess =
                rep.getAnonymousSession();

        HashMap paramsSLD =
                new HashMap();
        paramsSLD.put("uri1", "http://www.cc.uah.es/ie/ont/sld-ospace");
        paramsSLD.put("session", sess);

        //Get the queryManager
        SLDQueryManager qm =
                (SLDQueryManager) rep.getQueryManager
                    ("org.ontspace.sld.owl.SLDQueryManagerImpl", paramsSLD);



        SLDQueryResultImpl result =
                new SLDQueryResultImpl();



//        //get a query
//        result = qm.queryLOWhichActsContainsDifferentsRoles();
//        //show results
//        result.getResults();


        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOWhichRolePartContainsLAandSA();
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOWhichRolePartsContainsOnlyLA();
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOWithActs(1);
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOWithPlays(1);
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOWithXRolePartsInAct(1);
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOwichComplaintsTheoryOne(params);
        //show results
        result.getResults();


        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOwithActivitiesWithASpecificRole("learner");
        //show results
        result.getResults();

        //Uncomment this for another query
        result =
                null;
        //get a query
        result =
                qm.queryLOwithSupportActivitiesExecutedByLearners();
        //show results
        result.getResults();


    }
}
